package cn.easier.activity.console.service;

import cn.easier.activity.web.entity.ActivityInfo;
import cn.easier.activity.web.entity.PrizeClawImageMessage;
import cn.easier.club.base.dto.ResultInfo;

import java.util.List;

/**
 * 活动信息Service
 */
public interface ActivityInfoService {

    /**
     * 分页获取所有未删除的活动
     *
     * @return
     */
    public ResultInfo findPage(String user, Integer pageIndex, Integer pageNum, String name, String title, Integer templateInfoId);

    /**
     * 分页获取所有未删除的活动
     *
     * @return
     */
    public ResultInfo findAllActivity(Integer pageIndex, Integer pageNum, String name, String title, Integer templateInfoId);

    /**
     * 获取指定活动
     *
     * @param id 活动编号
     * @return
     */
    public ActivityInfo findOne(Integer id, String user);

    /**
     * 创建活动
     *
     * @param activityInfo 活动信息
     * @return
     */
    public ActivityInfo save(ActivityInfo activityInfo);

    /**
     * 修改活动
     *
     * @param activityInfo 活动信息
     * @return
     */
    public ActivityInfo update(ActivityInfo activityInfo);

    /**
     * 发布活动
     *
     * @param foregroundLink 活动展示链接
     * @param id 活动编号
     * @param user 用户
     * @return
     */
    public boolean release(String foregroundLink, Integer id, String user);

    /**
     * 活动上下架(上线或暂停)
     *
     * @param id 活动编号
     * @param release 上下架状态
     * @return
     */
    public boolean runOrPause(Boolean release, Integer id, String user);

    /**
     * 活动上下架(上线或暂停)
     * 超级管理员
     * @param id 活动编号
     * @param release 上下架状态
     * @return
     */
    public boolean runOrPauseOrSuperUser(Boolean release, Integer id);

    /**
     * 删除活动
     *
     * @param id 活动编号
     * @return
     */
    public boolean delete(Integer id, String user);


    /**
     * 获取最热模板top
     *
     * @param top 获取top条数据
     * @return 返回模板id列表
     */
    public List<Integer> getHottest(Integer top);

    /**
     * 获取所有未删除的活动
     *
     * @return
     */
    public List<ActivityInfo> findAll(String user);

    /**
     * 获取未删除的活动信息
     *
     * @param activityPrizeId 活动奖品Id
     * @return
     */
    public ActivityInfo findInfo(Integer activityPrizeId);

    public ActivityInfo findByOne(Integer id);

    public Boolean deleteSuper(Integer id);

    public ActivityInfo findByInfo(String user, Integer activityPrizeId);

    public List<ActivityInfo> findNewAll();

    ResultInfo savePrizeClawImageMessage(Integer activityInfoId, PrizeClawImageMessage prizeClawImageMessage);

}
